package net.hn.hnms.biz.api.safety.gasext.fegin;

import io.swagger.annotations.ApiOperation;
import net.hn.hnms.biz.api.feign.base.FeignClientsConfigurationCustom;
import net.hn.hnms.biz.api.safety.gasext.domain.*;
import net.hn.hnms.biz.api.safety.location.model.OutLimitAlarmingInfoVO;
import net.hn.hnms.sys.common.core.constant.ServiceNameConstants;
import net.hn.hnms.sys.common.core.domain.R;
import net.hn.hnms.sys.common.redis.domain.SysOrganization;
import net.hn.hnms.sys.common.redis.domain.SysOrganizationVo;
import net.hn.hnms.biz.api.safety.gasext.domain.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@FeignClient(contextId = "RemoteDwsService", value = ServiceNameConstants.MANAGEMENT_GASEXT_SERVICE
        ,fallback = RemoteDwsServiceFallback.class,configuration = FeignClientsConfigurationCustom.class
)
@Component
public interface RemoteDwsService {
    @GetMapping("remoteDws/getSafetyMonitoringLocl")
    @ApiOperation("大屏首页-安全检测（本地数据）")
    public R<SafetyMonitoringVo> getSafetyMonitoringLocl(@RequestParam("companyCode") String companyCode, @RequestParam("mineCode") String mineCode);

    /**
     * 获取当天报警超限信息
     */
    @GetMapping("remoteDws/alarmInfoList")
    @ApiOperation("获取当天报警超限信息")
    public R<List<OutLimitAlarmingInfoVO>> alarmInfoList(@RequestParam("companyCode") String companyCode, @RequestParam("mineCode") String mineCode);
    /**
     * 超员情况
     *
     * @return R
     */
    @GetMapping("remoteDws/getOverstaffingSituation")
    @ApiOperation("大屏首页-超员情况")
    public R<List<OverstaffingSituationDwsVo>> getOverstaffingSituation(@RequestParam("companyCode") String companyCode, @RequestParam("mineCode") String mineCode);

    /**
     * 获取大屏人员监测信息
     *
     * @return R
     */
    @GetMapping("remoteDws/getPersonnelMonitoring")
    @ApiOperation("大屏首页-人员检测")
    public R<PersonnelMonitoringVo> getPersonnelMonitoring(@RequestParam("companyCode") String companyCode, @RequestParam("mineCode") String mineCode);

    @GetMapping("remoteDws/trail")
    @ApiOperation("人员入井后轨迹")
    public R<List<TrailVo>> trail(@RequestParam("staffCode") String staffCode,
                                  @RequestParam("inTime")String inTime,
                                  @RequestParam("mineCode")String mineCode);

    @GetMapping("remoteDws/selectCodeSubList")
    @ApiOperation("获取煤业公司煤矿树结构")
    public R<SysOrganizationVo> selectCodeSubList();

    @GetMapping("remoteDws/selectCodeSubMineList")
    @ApiOperation("获取煤业公司煤矿列表结构")
    public R<List<SysOrganization>> selectCodeSubMineList();

    @GetMapping("remoteDws/selectDisasterList")
    @ApiOperation("获取煤业公司煤矿基本信息列表")
    public R<List<DimCoalMineBasicInfoVo>> selectDisasterList(@RequestParam("companyCode") String companyCode, @RequestParam("mineCode") String mineCode);

    @GetMapping("remoteDws/getTransfiniteStatistics")
    @ApiOperation("pc-大屏首页-超限统计")
    public R<TransfiniteStatisticsVo> getTransfiniteStatistics(@RequestParam("companyCode") String companyCode,@RequestParam("mineCode") String mineCode,@RequestParam("type") String type);
}
